//题目背景
//语文考试结束了，成绩还是一如既往地有问题。
//
//题目描述
//语文老师总是写错成绩，所以当她修改成绩的时候，总是累得不行。
//她总是要一遍遍地给某些同学增加分数，又要注意最低分是多少。你能帮帮她吗？
//
//输入格式
//第一行有两个整数 n，p，代表学生数与增加分数的次数。
//
//第二行有 n 个数，a 1∼a n，代表各个学生的初始成绩。
//
//接下来 p 行，每行有三个数，x，y，z，代表给第 x 个到第 y 个学生每人增加 z 分。
//
//输出格式
//输出仅一行，代表更改分数后，全班的最低分。

#include<iostream>
#include<climits>
using namespace std;
const int N = 5e6 + 10;
int a[N], b[N];
void insert(int l, int r, int c)
{
	b[l] += c;
	b[r + 1] -= c;
}
int main()
{
	int n, m;
	cin >> n >> m;
	for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
	for(int i = 1; i <= n; i++) insert(i, i, a[i]);
	while(m--){
		int l, r, c;
		scanf("%d%d%d", &l, &r, &c);
		insert(l, r, c);
	}
	for(int i = 1; i <= n; i++) b[i] += b[i - 1];
	int ans = INT_MAX;
	for(int i = 1; i <= n; i++) ans = min(ans, b[i]);
	cout << ans << endl;
	return 0;
}
